home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / crackme / CaoS.asm < prev    next >
Encoding:
Assembly Source File  |  1999-09-10  |  11.1 KB  |  368 lines

  1. ;pass: CRYptoGRaPhY
  2. .386
  3. locals
  4. jumps
  5. .model flat,STDCALL
  6.  
  7. extrn GetModuleHandleA:Proc ; chiamiamo tutte le API necessarie e definiamole
  8. extrn MessageBoxA:Proc      ; come procedure esterne
  9. extrn ExitProcess:Proc
  10. extrn CreateWindowExA:Proc
  11. extrn RegisterClassA:Proc
  12. extrn GetMessageA:Proc
  13. extrn DispatchMessageA:Proc
  14. extrn TranslateMessage:Proc
  15. extrn PostQuitMessage:Proc
  16. extrn DefWindowProcA:Proc
  17. extrn CloseHandle:Proc
  18. extrn GetProcAddress:Proc
  19. extrn PostQuitMessage:Proc
  20. extrn GetDlgItemTextA:Proc
  21. extrn GetWindowTextA:Proc
  22. extrn OpenFile:Proc
  23. extrn ReadFile:Proc
  24. extrn SetFilePointer:Proc
  25. extrn SetFocus:Proc
  26. extrn SetWindowTextA:Proc
  27. extrn CloseHandle:Proc
  28. extrn GetTickCount:Proc
  29.  
  30. OF_READ             = 0000H
  31. OF_WRITE            = 0001H
  32. OF_READWRITE        = 0002H
  33. OF_DELETE           = 0200H
  34. OF_VERIFY           = 0400H     ; Used with OF_REOPEN
  35. OF_SEARCH           = 0400H     ; Used without OF_REOPEN
  36. OF_REOPEN           = 8000H
  37. OF_SHARE_DENY_NONE  = 0040H
  38.  
  39. CS_VREDRAW          EQU 0001h    
  40. CS_HREDRAW          EQU 0002h
  41. CS_GLOBALCLASS      EQU 4000h    ; Global window class
  42. COLOR_WINDOW        EQU 10
  43. NULL                EQU 0        ; Questa Φ molto utile ;)
  44. MB_OK               EQU 00000000h
  45. MB_OKCANCEL         EQU 00000001h 
  46. MB_ICONHAND         EQU 00000010h 
  47. MB_ICONQUESTION     EQU 00000020h 
  48. MB_ICONEXCLAMATION  EQU 00000030h
  49. MB_ICONASTERISK     EQU 00000040h
  50. CW_USEDEFAULT       EQU 8000h    ; posizione di default della finestra
  51.  
  52. WS_OVERLAPPED   EQU 000000000h
  53. WS_THICKFRAME   EQU 000040000h
  54. WS_DLGFRAME     EQU 000400000h
  55. WS_BORDER       EQU 000800000h
  56. WS_CAPTION      EQU 000C00000h     ; WS_BORDER | WS_DLGFRAME
  57. WS_VISIBLE      EQU 010000000h
  58. WS_CHILD        EQU 040000000h
  59. WS_SYSMENU      EQU 000080000h
  60.  
  61. BS_DEFPUSHBUTTON EQU 0001h
  62.  
  63. WM_DESTROY      EQU 0002h
  64. WM_COMMAND      EQU 0111h
  65.  
  66. WNDCLASS struc
  67.         clsStyle          dd ?   ; class style
  68.         clsLpfnWndProc    dd ?
  69.         clsCbClsExtra     dd ?
  70.         clsCbWndExtra     dd ?
  71.         clsHInstance      dd ?   ; instance handle
  72.         clsHIcon          dd ?   ; class icon handle
  73.         clsHCursor        dd ?   ; class cursor handle
  74.         clsHbrBackground  dd ?   ; class background brush
  75.         clsLpszMenuName   dd ?   ; menu name
  76.         clsLpszClassName  dd ?   ; far ptr to class name    line50
  77. WNDCLASS ends
  78.  
  79. POINT   struc
  80.     ptX             dd ?
  81.     ptY             dd ?
  82. POINT   ends
  83.  
  84. MSGSTRUCT struc
  85.     msHWND          dd ?
  86.     msMESSAGE       dd ?
  87.     msWPARAM        dd ?
  88.     msLPARAM        dd ?
  89.     msTIME          dd ?
  90.     msPT            POINT <?>
  91. MSGSTRUCT ends
  92.  
  93. .data
  94. wc              WNDCLASS <?>
  95. msg             MSGSTRUCT <?>
  96. IDC_EDIT equ 1000
  97. AppHWnd         dd 0       ; l'handle dell'applicazione
  98. NewHWnd         dd 0       ; l'handle della nostra finestra 
  99. EditHWnd        dd 0
  100. EditHWnd1       dd 0
  101. FileHWnd        dd 0
  102. ButtonHWnd      dd 0
  103. EditClass       db "Edit",0
  104. WindowCaption   db "CaoS - - Coded by Quequero",0
  105. MSG        DB 'OK right pass!!!',0
  106. WndClassName    db "asm",0
  107. ButtonCaption   db "Register",0
  108. ButtonCaption1  db "About",0
  109. ButtonClass     db "Button",0    
  110. NULL            equ     0
  111. HANDLE          dd ?
  112. BUFFER          dd 3 DUP (0)
  113. TABLE1        DD 987F1452H, 6450B973H, 84A56709H 
  114. TABLE2        DD 10215980H, 5C8F7C66H, 5E8FD61AH
  115. TABLE3        DD 3A530DFFH, 438F8A0CH, 9A3B5B42H
  116. TABLE4        DD 50A48684H, 54A6DB12H, 1872B68DH
  117. TABLE5        DD 8732116AH, 87AB428DH, 3298AF21H
  118. TABLE6          DD 9832DFBAH, 572168B9H, 1872A8CDH
  119. TABLE7        DD 6328A5F2H, 89D3E5FAH, 2659A1B8H
  120. TABLE8        DD 58E5F2A3H, 62F8AA2AH, 129AE5F7H
  121. TABLE9        DD 81F2A5DCH, 214958A1H, 107B479AH
  122. TABLE10        DD 268487ADH, 34899AF4H, 389D45ABH
  123. TABLE11        DD 19422DF8H, 97311D2AH, 263D65A3H
  124. TABLE12        DD 346D17F3H, 8661A2F2H, 25805EBDH
  125.  
  126. XORPASS        DB 3AH, 0FFH, 1CH, 0ADH, 5AH, 0F8H, 95H, 0CDH, 30H, 25H, 0AEH, 90H
  127. MASKA        DB 85H, 12H, 67H, 25H, 12H, 78H, 36H, 91H, 70H, 35H, 75H, 15H
  128.  
  129. .code
  130. Start:
  131.         push    0h
  132.         call    GetModuleHandleA      ; troviamo l'handle dell'applicazione
  133.         mov     [AppHWnd],eax         ; salviamolo in EAX 
  134.         mov     [wc.clsStyle], CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
  135.         mov     [wc.clsLpfnWndProc], offset WndProc
  136.         mov     [wc.clsCbClsExtra], 0
  137.         mov     [wc.clsCbWndExtra], 0
  138.         mov     eax, [AppHWnd]
  139.         mov     [wc.clsHInstance], eax    ; the application handle
  140.         mov     [wc.clsHbrBackground], COLOR_WINDOW + 1
  141.         mov     dword ptr [wc.clsLpszMenuName], 0  ; no menu
  142.         mov     dword ptr [wc.clsLpszClassName], offset WndClassName
  143.         push    offset wc                 ; offset of filled class
  144.         call    RegisterClassA            ; register it !
  145.         
  146.         ; Creiamo la finestra
  147.         push    0                      ; lpParam
  148.         push    [AppHWnd]              ; hInstance
  149.         push    0                      ; menu
  150.         push    0                      ; parent hwnd
  151.         push    80                     ; height
  152.         push    280                    ; width
  153.         push    150                    ; y 
  154.         push    250                     ; x
  155.         push    WS_OVERLAPPED OR WS_DLGFRAME OR WS_SYSMENU OR WS_VISIBLE; Style
  156.         push    offset WindowCaption   ; Title string
  157.         push    offset WndClassName    ; Class name
  158.         push    0                      ; extra style
  159.         call    CreateWindowExA
  160.         mov     [NewHWnd], eax
  161.      
  162.         ; EditBox Name
  163.         push    0                      ; lpParam
  164.         push    [AppHWnd]              ; hInstance
  165.         push    10h               ; ID of the edit box
  166.         push    [NewHWnd]              ; parent hwnd
  167.         push    25                     ; height
  168.         push    160                    ; width
  169.         push    10                     ; y
  170.         push    5                      ; x
  171.         push    WS_BORDER OR WS_VISIBLE OR WS_CHILD; Style
  172.         push    0                      ; Title string
  173.         push    offset EditClass       ; Class name
  174.         push    0                      ; extra style
  175.         call    CreateWindowExA
  176.         mov     [EditHWnd], eax
  177.        
  178.         ;Creiamo il primo pulsante
  179.         push    0                      ; lpParam
  180.         push    [AppHWnd]              ; hInstance
  181.         push    20h                    ; ID of the button
  182.         push    [NewHWnd]              ; parent hwnd
  183.         push    25                     ; height
  184.         push    80                     ; width
  185.         push    10                     ; y
  186.         push    180                    ; x
  187.         push    WS_BORDER OR WS_VISIBLE OR WS_CHILD ; Style
  188.         push    offset ButtonCaption   ; Title string
  189.         push    offset ButtonClass     ; Class name
  190.         push    0                      ; extra style
  191.         call    CreateWindowExA
  192.         mov     [ButtonHWnd], eax
  193.         
  194. msg_loop:
  195.         push    0
  196.         push    0
  197.         push    0
  198.         push    offset msg
  199.         call    GetMessageA
  200.         cmp     ax, 0
  201.         je      end_loop
  202.         push    offset msg
  203.         call    TranslateMessage
  204.         push    offset msg
  205.         call    DispatchMessageA
  206.         jmp     msg_loop
  207. end_loop:
  208.  
  209. ;=================================================================================
  210. WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
  211.         cmp     [wmsg], WM_DESTROY  ; si Φ verificato l'evento WM_DESTROY?
  212.         je      wmdestroy           ; se si salta alla relativa routine
  213.         cmp     [wmsg], WM_COMMAND
  214.         je      wmcommand
  215.         push    [lparam]
  216.         push    [wparam]
  217.         push    [wmsg]
  218.         push    [hwnd]
  219.         call    DefWindowProcA
  220.         ret
  221.  
  222. wmdestroy:
  223.         push    0
  224.         call    PostQuitMessage
  225.         xor     eax, eax
  226.         PUSH    HANDLE
  227.         CALL    CloseHandle
  228.         PUSH    NULL                           ; Terminate program 
  229.         CALL    ExitProcess
  230.         ret
  231.  
  232. wmcommand:
  233.         cmp     [wparam],20h    ; Il primo pulsante Φ stato premuto?
  234.         jne     fine
  235.         call    check             
  236. fine:
  237.         xor     eax,eax            
  238.         ret
  239. WndProc endp
  240. ;===========================================================================
  241. check    proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
  242.     
  243.     PUSHA
  244.     CALL    GetWindowTextA, EditHWnd, OFFSET BUFFER, 12    
  245.     MOV    EAX, OFFSET BUFFER
  246.     LEA    EBX, DWORD PTR TABLE1
  247.     MOV    EBX, DWORD PTR[EAX+4]
  248.     XOR    DWORD PTR[EAX], EBX
  249.     LEA    EBX, TABLE2+8
  250.     XOR    DWORD PTR[EAX+4], EBX
  251.     LEA    EBX, TABLE9+8
  252.     XOR    DWORD PTR[EAX], EBX
  253.     LEA    EBX, TABLE8+4
  254.     XOR    DWORD PTR[EAX+6], EBX
  255.     LEA    EBX, TABLE7
  256.     XOR    DWORD PTR[EAX+3], EBX
  257.     LEA    EBX, TABLE8
  258.     XOR    DWORD PTR[EAX+4], EBX
  259.     LEA    EBX, TABLE3
  260.     XOR    DWORD PTR[EAX], EBX
  261.     LEA    EBX, TABLE9
  262.     XOR    DWORD PTR[EAX+2], EBX
  263.     LEA    EBX, TABLE2+4
  264.     XOR    DWORD PTR[EAX], EBX
  265.     LEA    EBX, TABLE4+4
  266.     XOR    DWORD PTR[EAX+4], EBX
  267.     LEA    EBX, TABLE5+8
  268.     XOR    DWORD PTR[EAX+7], EBX
  269.     LEA    EBX, TABLE6
  270.     XOR    DWORD PTR[EAX], EBX
  271.     LEA    EBX, TABLE2+4
  272.     XOR    DWORD PTR[EAX+3], EBX
  273.     LEA    EBX, TABLE6+8
  274.     XOR    DWORD PTR[EAX], EBX
  275.     LEA    EBX, TABLE7
  276.     XOR    DWORD PTR[EAX+2], EBX
  277.     LEA    EBX, TABLE1+4
  278.     XOR    DWORD PTR[EAX], EBX
  279.     LEA    EBX, TABLE8
  280.     XOR    DWORD PTR[EAX+1], EBX
  281.     LEA    EBX, TABLE12+8
  282.     XOR    DWORD PTR[EAX], EBX
  283.     LEA    EBX, TABLE9+4
  284.     XOR    DWORD PTR[EAX+4], EBX
  285.     LEA    EBX, TABLE3+8
  286.     XOR    DWORD PTR[EAX], EBX
  287.     LEA    EBX, TABLE3
  288.     XOR    DWORD PTR[EAX+5], EBX
  289.     LEA    EBX, TABLE11
  290.     XOR    DWORD PTR[EAX+4], EBX
  291.     LEA    EBX, TABLE7+8
  292.     XOR    DWORD PTR[EAX+5], EBX
  293.     LEA    EBX, TABLE4+8
  294.     XOR    DWORD PTR[EAX+7], EBX
  295.     LEA    EBX, TABLE6+4
  296.     XOR    DWORD PTR[EAX+4], EBX
  297.     LEA    EBX, TABLE11+8
  298.     XOR    DWORD PTR[EAX], EBX
  299.     LEA    EBX, TABLE10
  300.     XOR    DWORD PTR[EAX+1], EBX
  301.     LEA    EBX, TABLE10+8
  302.     XOR    DWORD PTR[EAX+4], EBX
  303.     LEA    EBX, TABLE12
  304.     ADD    WORD PTR[EAX+10], 8573H
  305.     XOR    DWORD PTR[EAX], EBX
  306.     LEA    EBX, TABLE4+4
  307.     XOR    DWORD PTR[EAX], EBX
  308.     LEA    EBX, TABLE10+8
  309.     XOR    DWORD PTR[EAX+1], EBX
  310.     LEA    EBX, TABLE5
  311.     XOR    DWORD PTR[EAX], EBX
  312.     LEA    EBX, TABLE1+8
  313.     XOR    DWORD PTR[EAX], EBX
  314.     LEA    EBX, TABLE10
  315.     XOR    DWORD PTR[EAX+3], EBX
  316.     LEA    EBX, TABLE9+8
  317.     XOR    DWORD PTR[EAX], EBX
  318.     LEA    EBX, TABLE5+4
  319.     XOR    DWORD PTR[EAX+6], EBX
  320.     LEA    EBX, TABLE4
  321.     XOR    DWORD PTR[EAX+1], EBX
  322.     LEA    EBX, TABLE11+8
  323.     XOR    DWORD PTR[EAX+4], EBX
  324.     LEA    EBX, TABLE3
  325.     XOR    DWORD PTR[EAX], EBX
  326.     LEA    EBX, TABLE8+8
  327.     XOR    DWORD PTR[EAX+3], EBX
  328.     LEA    EBX, TABLE5+4
  329.     XOR    DWORD PTR[EAX+5], EBX
  330.     LEA    EBX, TABLE5
  331.     XOR    DWORD PTR[EAX], EBX
  332.     LEA    EBX, TABLE11+8
  333.     XOR    DWORD PTR[EAX+5], EBX
  334.     LEA    EBX, TABLE7+4
  335.     XOR    DWORD PTR[EAX+7], EBX
  336.     LEA    EBX, TABLE12
  337.     XOR    DWORD PTR[EAX+3], EBX
  338.     LEA    EBX, TABLE12
  339.     XOR    DWORD PTR[EAX+4], EBX
  340.     LEA    EBX, TABLE12+4
  341.     XOR    DWORD PTR[EAX+4], EBX
  342.     LEA    EBX, TABLE6+8
  343.     AND    WORD PTR[EAX+4],97H
  344.     OR    DWORD PTR[EAX], 985H
  345.     ROR    DWORD PTR[EAX+2], 61H
  346.     XOR    ECX, ECX
  347. LOPPA:    MOV    BL, BYTE PTR[EAX+ECX]
  348.     MOV    BH, BYTE PTR[MASKA+ECX]
  349.     XOR    BL, BH
  350.     MOV    DL, BYTE PTR[XORPASS+ECX]
  351.     CMP    BL, DL
  352.     JNE    FUORI
  353.     INC    ECX
  354.     CMP    ECX, 12
  355.     JNE    LOPPA
  356.     PUSH    MB_OK OR MB_ICONQUESTION
  357.     PUSH    OFFSET WindowCaption
  358.     PUSH    OFFSET MSG
  359.     PUSH    NULL
  360.     CALL    MessageBoxA
  361.     POPA
  362.     JMP     msg_loop
  363.     
  364. check    endp
  365. ;===========================================================================
  366. FUORI:    JMP msg_loop
  367. End Start
  368.